// vuex的主文件 放在store文件夹下的index.js中
import Vue from 'vue'
import Vuex from 'vuex'
// 导入分模块的store
import cartStore from './module/cart'
Vue.use(Vuex)
// vuex 是vuex的公共状态管理
// vuex 有5个属性
// state属性  设计的公共状态
// mutations属性  同步修改公共状态state的方法
// actions  属性  异步修改公共状态state的方法
let store = new Vuex.Store({
  state: {
    count: 1,//设计的计数器的公共状态
  },
  mutations: {
    // mutations 的第一个参数是state
    // mutations 的第二个参数是传进来的参数
    // 触发mutations的方法 
    // 用$store.commit("方法名",实参)
    changeCount (state, num) { //每次让count固定加num
      state.count += num;
    }

  },
  actions: {
    // actions第一个参数 解构的commit方法
    // actions 第二个参数是传进来的参数
    // 触发actions的方法 用dispatch
    actCount ({ commit }, num) { //异步state的count的方法
      // actions无法直接修改state
      // actions 通过触发mutations去修改state、
      commit("changeCount", num)
    }
  },
  getters: { //getter是vuex的计算属性
    doubleCount (state) {
      return state.count * 2;
    }
  },
  modules: { //模块化
    cartStore //注册的分模块名
  }
})
export default store